package com.orange.core.pojo.entity.activityRegistration;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.orange.core.pojo.entity.IIntIdModel;
import com.orange.core.pojo.entity.IOperatorModel;
import com.orange.core.pojo.enums.PaymentStatus;
import com.orange.core.pojo.enums.PaymentTypeEnums;
import com.orange.core.pojo.enums.RefundStatus;
import com.orange.core.pojo.enums.RegistrationEnum;
import com.orange.core.util.Constants;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 活动报名表
 * @TableName activity_registration
 */
@Data
@Accessors(chain = true)
public class ActivityRegistration implements IIntIdModel<ActivityRegistration>, IOperatorModel<ActivityRegistration> {

    /**
     * 序号
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 活动id
     */
    private Integer activityId;

    /**
     * 报名帐号
     */
    private Integer userId;

    /**
     * 联系人姓名
     */
    private String name;

    /**
     * 联系人电话
     */
    private String phone;

    /**
     * 报名人数
     */
    private Integer number;

    /**
     * 状态(0:待确认,1:已确认,2:已取消)
     */
    private RegistrationEnum status;

    /**
     * 审核原因
     */
    private String reviewReason;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 支付类型(0:免费,1:积分,2:微信支付)
     */
    private PaymentTypeEnums paymentType;

    /**
     * 支付金额
     */
    private BigDecimal paymentAmount;

    /**
     * 支付时间
     */
    private LocalDateTime paymentTime;

    /**
     * 是否支付成功：0-未支付，1-已支付
     */
    private PaymentStatus isPaid;

    /**
     * 是否退款：0-未退款，1-已退款
     */
    private RefundStatus isRefunded;

    /**
     * 微信退款订单号
     */
    private String refundTransactionId;

    /**
     * 退款时间
     */
    private LocalDateTime refundTime;

    /**
     * 备注
     */
    private String auditRemark;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = Constants.DEFAULT_DATE_FORMAT)
    private LocalDateTime createTime;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateBy;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}